
#pragma once

class CDetourManager
{
private:
	CDetourManager(void);
	~CDetourManager(void);

public:


	static HRESULT Init(HANDLE hModule);
	static void Exit();
	static bool InstallDetour(void** originalFunction, void* newFunction);
	static bool UninstallDetour(void* originalFunction, void* newFunction);
	static void Send(LPCTSTR lpFormat, ...);
	static LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam);
public:
	static CStreamFormatter m_log;
	static HHOOK g_hHook;
	static HINSTANCE g_hInstance;
private:
	static CWriteStreamOnFile m_ws;
};

